#ifndef __GZ_GAZELLA_ACTIVE_H__
#define __GZ_GAZELLA_ACTIVE_H__

#include <functional>
#include <memory>
#include <atomic>
#include <vector>

#include "interface_timer.h"

namespace Gazella{
typedef std::function<void(bool)> active_callback_t;

class GazellaActive {
private:
    GazellaActive();
    ~GazellaActive();

public:
    static GazellaActive* get_instance();

    void init(
        active_callback_t active_cb
    );

private:
    std::atomic<bool> m_active_state;
    uint32_t m_timer_id;

    active_callback_t m_active_cb = nullptr;

    void __timer_cb();
};
} // namespace Gazella

#endif